home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)ts.d64 / diskview.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  13KB  |  457 lines

  1. 5 REM PETER J. PONZO
  2. 6 REM 49 MARGARET AVE. S.               8 REM WATERLOO,ONT. N2J 2C8
  3. 7 REM JUN 19/82
  4. 10 POKE53281,6:POKE53280,6:GOSUB8000
  5. 100 REM********
  6. 101 REM*      *
  7. 102 REM* MENU *
  8. 103 REM" [184][184][184][184] *
  9. 104 [143]********
  10. 105 [160]15:[159]15,8,15:[153][199](14)
  11. 110 [153]"LOAD"S0$
  12. 115 [153]"1WAIT:(null)OAD BLOCK INTO BUFFER"
  13. 120 [153]"2WAIT:(null)EE ATN(null)LENRIGHT$RIGHT$ OF ABOVE BLOCK"
  14. 130 [153]"3WAIT:(null)ODIFY ABOVE BLOCK"
  15. 140 [153]"4WAIT:(null)TORE ABOVE BLOCK IN (null)ATN(null)"
  16. 150 [153]"5WAIT:(null)RITE BLOCK IN (null)ATN(null) TO DISK"
  17. 160 [153]"6WAIT:PEEKLOCK ATNVAILABILITY (null)AP"
  18. 170 [153]"7WAIT:STR$ISK LENOMMANDS"
  19. 180 [153]"8WAIT:(null)RACE PEEKLOCKS
  20. 185 PRINT"9[146]:[213]NSCRATCH A [198]ILE
  21. 186 [153]"(null)VAL(null)(null)(null)(null)WAIT TO (null)UIT"
  22. 198 [141]310:[139]IN[178]0[167]7900
  23. 199 [145]IN[141]1000,2000,3000,4000,5000,6000,7000,7100,7500
  24. 200 [137]105
  25. 300 [143]  GET
  26. 301 [143]" FREFREFRE
  27. 305 PRINT"[210][197][212][213][210][206][146] TO CONT"
  28. 310 GETIN$:IFIN$<>""THEN310
  29. 320 GETIN$:IFIN$=""THEN320
  30. 330 IN=VAL(IN$):RETURN
  31. 1000 REM LOAD BLOCK INTO BUFFER
  32. 1001 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]
  33. 1010 [160]3:[160]15:[159]15,8,15:[159]3,8,3,"#":[161]#3,BN$:BN[178][198](BN$)
  34. 1015 BN$[178][202](BN$,2):BM[178]BN[170]17[170]12[172][181]((BN[170]1)[173]4)
  35. 1020 [152]15,"B-P";3;1:[153]"LOAD"
  36. 1030 [129]K[178]0[164]10:[152]3,K$;:[130]
  37. 1040 [153]"LOAD"[170]SD$[170]""
  38. 1050 [133]"(null)(null)ATNLEN(null),(null)VALLEN(null)(null)(null)WAIT   SPC(CMDCMDCMD";T,S
  39. 1060 [152]15,"B-R";3;DR;T;S
  40. 1070 [152]15,"B-P";3;0
  41. 1080 [161]#3,Z$:[139]Z$[178]""[167]Z$[178][199](0)
  42. 1090 C(0)[178][198](Z$):[141]1200
  43. 1120 [153]"(null)VAL(null)(null)(null)(null) TO TERMINATE":CRT[178]01069:[153][196](C(0))[196](C(1));
  44. 1130 J[178]2:[129]I[178]2[164]255:[152]15,"M-R";[199](I);[199](BM):I%[178]I[173]32
  45. 1140 [161]#15,B$:[139]B$[178]""[167]B$[178][199](0)
  46. 1150 C(I)[178][198](B$):[139]T[179][177]DI[167]1165
  47. 1160 [139]S[177]0[175]I%[172]32[178]I[171]5[167][141]10000
  48. 1161 [139]S[177]0[175]I%[172]32[178]I[167][141]11000
  49. 1165 [151]CRT[170]J,C(I)
  50. 1170 [161]A$:[139]A$[179][177]""[167][141]1195
  51. 1180 J[178]J[170]1:[130]
  52. 1190 [160]3:[160]15:[153]SD$"ONON":[141]300:[142]
  53. 1195 [153]SD$"PEEK(null)(null)LEN(null) LEFT$ATN(null) (null)(null)(null) PEEKVALVAL(null) LEN(null)(null)(null)(null)VAL(null)VAL(null)(null) (null)(null)ATNSTR$VALSTR$"
  54. 1196 [133]"..WANT TO CONTINUE LOADING   NCMDCMDCMD";N$:[139]N$[178]"N"[167]I[178]256
  55. 1197 [153]SD$"ONON                                    "
  56. 1198 [153]"                                 "
  57. 1199 [142]
  58. 1200 [143] C(0)/C(1)
  59. 1201 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(
  60. 1210 PRINTSD$:PRINT#15,"B-P";3;1
  61. 1220 GET#3,B$:IFB$=""THENB$=CHR$(0)
  62. 1230 C(1)=ASC(B$)
  63. 1240 IFC(0)=0THENPRINTSD$:PRINT"[204]AST [212]RACK":PRINT"[194]YTES [213]SED="C(1):RETURN
  64. 1250 PRINTSD$:PRINT"[206]EXT [212]RACK="C(0):PRINT"[206]EXT [211]ECTOR="C(1)
  65. 1260 NT=C(0):NS=C(1):RETURN
  66. 2000 REM PRINT ASCII
  67. 2001 REM"[184][184][184][184][184][184][184][184][184][184][184]
  68. 2002 IJ[178]0:II[178]255[171]8:[153]"LOAD"
  69. 2005 [153]"(null)VAL(null)(null)(null)(null) TO DISCONTINUE PRINTING..":[153]S0$:AB[178]31:EE$[178]"WAIT "
  70. 2010 [129]I[178]0[164]II[169]8:Y$[178][196](I):Y$[178]"ON"[170][201]("  "[170]Y$,3):E0$[178]EE$
  71. 2012 [153]""CL$:[153]""Y$"WAIT->";:[129]J[178]0[164]7:H[178]I[170]J:C5[178]C(H)
  72. 2013 [139]C5[177]AB[167]E0$[178]E0$[170][199](C5):[137]2015
  73. 2014 E0$[178]E0$[170]" "
  74. 2015 E$[178][201]("   "[170][202]([196](C5),2),3)
  75. 2020 [153]R$(P)E$R$(1[171]P);:P[178]1[171]P:[130]
  76. 2025 [161]A$:[139]A$[179][177]""[167]II[178]I:I[178]255
  77. 2030 [153]E0$:[130]:[153]CL$:[153]CL$:[153]CL$:[153]CL$
  78. 2031 [153]"ONONONONLEN(null)(null)(null)VAL(null)(null) (null)(null)ATNLEN(null),(null)VALLEN(null)(null)(null)="T","S
  79. 2035 [153]"NEXT TRACK,SECTOR="NT","NS
  80. 2040 [139]IJ[178]0[167][141]300
  81. 2050 [142]
  82. 3000 [143] MODIFY BLOCK
  83. 3001 [143]"FREFREFREFREFREFREFREFREFREFREFREFRE
  84. 3060 PRINT"[147][212]HE [193][211][195][201][201] CODE FOR EACH BLOCK-BYTE"
  85. 3070 PRINT"WILL BE DISPLAYED..I.E. C(0)...C(255)."
  86. 3080 PRINT"[217]OU MAY REDEFINE ANY C(I). [212]HE MODIFIED"
  87. 3090 PRINT"BLOCK WILL BE WRITTEN TO THE DISK"
  88. 3100 PRINT"INTO THE [212]RACK,[211]ECTOR YOU SELECT."
  89. 3110 PRINT""
  90. 3120 GOSUB300:PRINT"[147]":II=255-8:IJ=1
  91. 3130 PRINT"":GOSUB2005
  92. 3140 PRINT">>>[210][197][212][213][210][206] TO QUIT[146]<<<":GETI$
  93. 3150 INPUT"[215][200][201][195][200] I [196][207][160][217][207][213][160][215][201][211][200][160][212][207][160][205][207][196][201][198][217][146]     [157][157][166][157][157][157]";I$:I=VAL(I$)
  94. 3160 IFI$="[166]"THEN3173
  95. 3170 PRINT"CURRENT C("I")=     [160][157][157][157][157][157]"C(I)" NEW VALUE=     [157][157][157][157][157]";:INPUTC(I)
  96. 3171 IFI>IITHENII=I
  97. 3172 GOTO3150
  98. 3173 PRINT"[147]":GOSUB2005:PRINT"        >>>OK[146]?  ";:POKE204,0
  99. 3174 GOSUB310:POKE204,1:IFIN$="N"THENPRINT:GOTO3150
  100. 3175 INPUT"[147]RETURN TO MENU[146]   N[157][157][157]";IN$
  101. 3176 IFIN$="Y"THENRETURN
  102. 3177 PRINT"[147][195][213][210][210][197][206][212] [212][210][193][195][203],[211][197][195][212][207][210]="T","S
  103. 3178 PRINT"NEXT TRACK,SECTOR="NT","NS
  104. 3180 INPUT"[196][197][211][212][201][206][193][212][201][207][206] [212][210][193][195][203],[211][197][195][212][207][210][146]   [166][157][157][157]";T,S:IF(T<1)OR(T>TT)THEN3180
  105. 3190 INPUT"[196][197][211][212][201][206][193][212][201][207][206] [196][210][201][214][197][146][160][160][160][166][157][157][157]";DR$:DR=VAL(DR$):IFDR$="[166]"THEN3190
  106. 3200 CLOSE3:CLOSE15:OPEN15,8,15
  107. 3210 OPEN3,8,3,"#":GOSUB63900
  108. 3215 GET#3,BN$:BN=ASC(BN$):PRINT"[147]"SD$"USING [194][213][198][198][197][210]#"BN
  109. 3220 BM=BN+17+12*INT((BN+1)/4)
  110. 3225 FORI=0TO255
  111. 3230 PRINT#15,"M-W";CHR$(I);CHR$(BM);CHR$(1);CHR$(C(I))
  112. 3240 PRINT"   [157][157][157]"I
  113. 3250 NEXT
  114. 3280 PRINT#15,"U2:";3;DR;T;S
  115. 3290 PRINT#15,"I"+DR$:GOSUB63900:CLOSE3:CLOSE15
  116. 3300 PRINT"[147]":RETURN
  117. 4000 REM STORE C(I) IN RAM
  118. 4001 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]
  119. 4005 [153]"LOAD";:[141]2000
  120. 4020 [133]"(null)(null)ATN(null)(null)RIGHT$(null)CHR$CLOSE(null)ATN(null)(null)VALCLOSE(null)ASC IWAIT   SPC(CMDCMDCMD";I1
  121. 4030 [133]"(null)(null)ATN(null)(null)RIGHT$(null)CHR$CLOSE(null)VAL(null)(null)(null)(null)CLOSE(null)(null)LENTHEN(null)WAIT($=LEFT$VAL(null))   SPC(CMDCMDCMD";M$:[141]9000
  122. 4040 [129]K1[178]I1[164]255:[151]M[171]I1[170]K1,C(K1):[130]
  123. 4050 M[178]M[171]I1[170]256:[153]"(null)VAL(null)(null)WAIT MEM'Y LOC'N="M;:[141]9500:[153]""M$
  124. 4060 [141]300
  125. 4070 [153]"LOAD";:[142]    
  126. 5000 [143] WRITE RAM TO DISK
  127. 5001 [143]"FREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFRE
  128. 5020 INPUT"[205][197][205]'[217] [204][207][195]'[206] [207][198] [194][204][207][195][203][146]($=[200][197][216])   [166][157][157][157]";M$:GOSUB9000
  129. 5030 INPUT"[211][212][193][210][212] [215][201][212][200] I[146]=[160][160][160][166][157][157][157]";I1
  130. 5040 INPUT"[197][206][196] [215][201][212][200] I[146]=[160][160][160][166][157][157][157]";I2
  131. 5060 FORI=I1TOI2:C(I)=PEEK(M+I):NEXT
  132. 5070 INPUT"[147][196][197][211][212][201][206][193][212][201][207][206] [212][210][193][195][203],[211][197][195][212][207][210][146]   [166][157][157][157]";T,S:IF(T<1)OR(T>TT)THEN5070
  133. 5080 INPUT"[196][197][211][212][201][206][193][212][201][207][206] [196][210][201][214][197][146][160][160][160][166][157][157][157]";DR$:DR=VAL(DR$):IFDR$="[166]"THEN5080
  134. 5090 OPEN3,8,3,"#":GET#3,BN$:BN=ASC(BN$):PRINT"[147]"SD$"USING [194][213][198][198][197][210]#"BN
  135. 5095 BM=BN+17+12*INT((BN+1)/4)
  136. 5100 FORI=I1TOI2:PRINT"   [157][157][157]"I
  137. 5110 PRINT#15,"M-W";CHR$(I);CHR$(BM);CHR$(1);CHR$(C(I))
  138. 5130 NEXT
  139. 5140 PRINT#15,"U2:";3;DR;T;S
  140. 5150 PRINT#15,"I"+DR$:GOSUB63900:CLOSE3:CLOSE15
  141. 5160 PRINT"[147]":RETURN
  142. 6000 REM BAM
  143. 6010 REM"[184][184][184]
  144. 6020 [150] [165]B(I)[178](Z[175]P(I))[173]P(I)
  145. 6030 [160]15:[153][199](142)
  146. 6040 [153]"LOAD1WAIT:DISPLAY BAM"
  147. 6050 [153]"2WAIT:CHANGE BAM"
  148. 6060 [153]"3WAIT:RETURN TO MAIN MENU"
  149. 6070 [141]310:[153]"LOAD":[139]IN[178]3[167]6095
  150. 6080 [145]IN[141]6100,6280
  151. 6090 [137]6030
  152. 6095 [160]2:[160]3:[159]15,8,15,"I"[170]DR$:[153][199](14):[141]63900:[142]
  153. 6100 [143] DISPLAY BAM
  154. 6110 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(
  155. 6120 PRINT"WHICH TRACKS":PRINT"[184][184][184][184][184][184][184][184][184][184][184][184]
  156. 6130 [133]"FIRST,LAST TRACK   SPC(CMDCMDCMD";TS,TE
  157. 6140 [139](TS[179]1)[176](TS[177]TT)[176](TE[179]1)[176](TE[177]TT)[176](TE[179]TS)[167]6130
  158. 6150 [153]"LOADRETURNWAITWAIT TO STOP":[153]S0$
  159. 6160 [159]15,8,15,"I"[170]DR$:[141]63900
  160. 6170 [159]2,8,2,"$"[170]DR$:[141]63900
  161. 6180 FF[178]D1[170](TS[171]1)[172]S3
  162. 6190 [129]K[178]0[164]FF:[161]#2,A$:[130]
  163. 6200 [129]T[178]TS[164]TE:[139]T[178]51[167][161]#2,A$,A$,A$,A$
  164. 6210 [141]6400
  165. 6220 [161]A$:[139]A$[179][177]""[167]T[178]TT[170]1
  166. 6230 [130]:[160]2:[160]15:[141]6870:[141]310:[142]
  167. 6240 [143] CHANGE BAM
  168. 6250 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(
  169. 6260 INPUT"[147]MORE CHANGES   Y[157][157][157]";I$
  170. 6270 IFI$<>"Y"THENRETURN
  171. 6280 IFDT=67THENPRINT"[147]SORRY..CAN'T CHANGE BAM FOR THIS DISK.":GOSUB310:RETURN
  172. 6285 INPUT"[147]TRACK   [214][157][157][157]";T:IF(T<1)OR(T>TT)THENN6280
  173. 6290 CLOSE15:OPEN15,8,15
  174. 6300 CLOSE2:OPEN2,8,2,"#":GOSUB63900
  175. 6310 PRINT#15,"U1:";2;DR;DI;0
  176. 6320 PRINT#15,"B-P";2;T*4
  177. 6330 PRINT"[147]ENTER NEGATIVE SECTOR TO QUIT":GOSUB6400:GOSUB6580
  178. 6340 INPUT"CHANGE WHICH SECTOR     [157][157][214][157][157][157]";S
  179. 6350 IFS<0ORS>=SC(T)THEN6260
  180. 6360 CLOSE2:CLOSE15:PRINTSD$
  181. 6370 GOSUB6620:GOSUB6480:GOSUB6580:PRINT:PRINTMD$"OK?[146]";:GOSUB310:PRINTCL$
  182. 6380 IFIN$="Y"THENGOSUB6730
  183. 6385 PRINTMD$CL$SD$
  184. 6390 GOSUB6480:GOTO6340
  185. 6400 FORK=0TOS2:GET#2,A$
  186. 6410 IFA$=""THENA$=CHR$(0)
  187. 6420 B(K)=ASC(A$)
  188. 6430 NEXT
  189. 6480 REM PRINT TRACK
  190. 6490 REM"[163][163][163][163][163][163][163][163][163][163][163]
  191. 6500 [129]K[178]1[164]S1:Z[178]B(K)
  192. 6510 [129]I[178]0[164]7
  193. 6520 X[178][165]B(I):[153]X$(X);:[130]I
  194. 6530 [130]K
  195. 6540 Z[178]B(K):[129]I[178]0[164]SC(T)[171]SC(TT)
  196. 6550 X[178][165]B(I):[153]X$(X);:[130]I:[153]
  197. 6560 [153]"ON"[163]22)"TRACK"T"WAITCMDFREE="B(0)
  198. 6570 [142]
  199. 6580 [153][200](S1$,SC(T))
  200. 6590 [153][200](S2$,SC(T))[163]23)"# SECTORS="SC(T)
  201. 6600 [139]SC(T)[178]21[167][153][200](S3$,SC(T)[170]1):[137]6610
  202. 6605 [153][200](S3$,SC(T))
  203. 6610 [153]S0$:[142]
  204. 6620 [143] CHANGE SECTOR
  205. 6630 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(
  206. 6640 IFS<8THENZ=B(1):SS=S:GOTO6670
  207. 6650 IFS<16THENZ=B(2):SS=S-8:GOTO6670
  208. 6660 Z=B(3):SS=S-16
  209. 6670 NZ=(NOTZANDP(SS))OR(ZANDNOTP(SS))
  210. 6680 B(0)=B(0)+(NZ<Z)-(NZ>Z)
  211. 6690 IFS<8THENB(1)=NZ:GOTO6720
  212. 6700 IFS<16THENB(2)=NZ:GOTO6720
  213. 6710 B(3)=NZ
  214. 6720 RETURN
  215. 6730 OPEN15,8,15
  216. 6740 PRINTMD$"ARE YOU SURE?[146]";:GOSUB310:PRINTIN$;:IFIN$<>"Y"THENRETURN
  217. 6750 PRINT"..CHANGING BAM..";
  218. 6760 OPEN3,8,3,"#":GOSUB63900
  219. 6770 GET#3,BN$:BN=ASC(BN$)
  220. 6780 BM=BN+17+12*INT((BN+1)/4)
  221. 6790 FORI=0TOS2
  222. 6800 PRINT#15,"M-W";CHR$(I+T*4);CHR$(BM);CHR$(1);CHR$(B(I)):NEXT
  223. 6840 PRINT#15,"U2:";3;DR;DI;0
  224. 6850 PRINT#15,"I"+DR$:GOSUB63900:CLOSE3:CLOSE15
  225. 6860 RETURN
  226. 6870 PRINT"RETURN[146] TO CONTINUE";:RETURN
  227. 7000 REM DISK COMMANDS
  228. 7001 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184]
  229. 7002 [153][199](14)
  230. 7005 [153]"LOAD1WAIT:RIGHT$NITIALIZE"
  231. 7006 [153]"2WAIT:(null)ALIDATE"
  232. 7007 [153]"3WAIT:LENHANGE STR$(null)RIGHT$(null)VAL#
  233. 7008 PRINT"4[146]:[196]ISPLAY [196]IRECTORY"
  234. 7009 PRINT"9[146]:[210][197][212][213][210][206] TO MENU"
  235. 7010 GOSUB310:IFIN<1ORIN>9THEN7000
  236. 7015 PRINT"[147]OK..":ON IN GOTO7020,7030,7040,7050,,,,,7099
  237. 7020 CLOSE15:OPEN15,8,15,"I"+DR$:GOSUB63900:GOTO7000
  238. 7030 CLOSE15:OPEN15,8,15,"V"+DR$:GOSUB63900:GOTO7000
  239. 7040 INPUT"DRIVE   [166][157][157][157]";DR$:DR=VAL(DR$):GOTO7000
  240. 7050 IFDR=0THENRETURN
  241. 7051 IFDR=1THEN(null)D1
  242. 7052 GOSUB300:GOTO7000
  243. 7099 RETURN
  244. 7100 REM TRACE BLOCKS
  245. 7101 REM"[184][184][184][184][184][184][184][184][184][184][184][184]
  246. 7105 [133]"LOADSTARTING (null)(null)ATNLEN(null),(null)VALLEN(null)(null)(null)WAIT   SPC(CMDCMDCMD";T,S
  247. 7106 [139](T[179]1)[176](T[177]TT)[176](S[179]0)[176](S[177]SC(T))[167]7110
  248. 7110 [160]3:[160]15:[159]15,8,15:[159]3,8,3,"#":[141]63900:[161]#3,BN$:BN[178][198](BN$)
  249. 7111 BN$[178][202](BN$,2):BM[178]BN[170]17[170]12[172][181]((BN[170]1)[173]4)
  250. 7115 [153]:[153]"("T","S")_ ASCRIGHT$(null)(null)(null) PEEK(null)(null)LEN(null)":N9[178]1
  251. 7120 [152]15,"B-R";3;DR;T;S
  252. 7130 [152]15,"B-P";3;0
  253. 7140 [161]#3,Z$:[139]Z$[178]""[167]Z$[178][199](0)
  254. 7150 T[178][198](Z$):[139]T[178]0[167]7200
  255. 7160 [161]#3,Z$:[139]Z$[178]""[167]Z$[178][199](0)
  256. 7170 S[178][198](Z$)
  257. 7175 T$[178][202]([196](T),2):S$[178][202]([196](S),2)
  258. 7180 [153]"("T$","S$")";
  259. 7190 N9[178]N9[170]1:[137]7120
  260. 7200 [153]"_ (null)ATN(null)(null) PEEK(null)(null)LEN(null)"
  261. 7210 [153]N9" BLOCKS":[141]300:[142]
  262. 7500 [143] UNSCRATCH
  263. 7501 [143]"FREFREFREFREFREFREFREFREFRE
  264. 7510 PRINT"[147][215]E'LL DO THE FOLLOWING:"
  265. 7511 PRINT"1[146]:[199]O THRU' DIRECTORY TRACK"DI" UNTIL"
  266. 7512 PRINT"  WE FIND THE SCRATCHED FILE NAME."
  267. 7513 PRINT"2[146]:[212]RACE THE [194]LOCKS AND COMPARE"
  268. 7514 PRINT"  THE [194]LOCKS OBTAINED WITH THE"
  269. 7515 PRINT"  [196]IRECTORY [194]LOCK [195]OUNT."
  270. 7516 PRINT"3[146]:[204]OOK AT THE [194]LOCK [193]VAILABILTY [205]AP"
  271. 7517 PRINT"  TO SEE IF ALL THE BLOCKS ARE FREE."
  272. 7518 PRINT">>[201]F ALL OF THE ABOVE ARE [207][203]"
  273. 7519 PRINT"  WE MAY [205]ODIFY THE [196]IRECTORY"
  274. 7520 PRINT"  AS FOLLOWS:":GOSUB300
  275. 7540 PRINT"[147][205]ODIFY THE BLOCK SO THAT THE"
  276. 7545 PRINT"MAGIC BYTE"
  277. 7550 PRINT"  WHICH OCCURS JUST 3[146] PLACES BEFORE"
  278. 7560 PRINT"  THE NAME IS AS FOLLOWS:"
  279. 7570 PRINT"  129=[211][197][209] FILE"
  280. 7571 PRINT"  130=[208][210][207][199] FILE"
  281. 7572 PRINT"  131=[213][211][210] FILE"
  282. 7573 PRINT"  132=[210][197][204] FILE"
  283. 7580 PRINT"[197]XAMPLE:TO UNSCRATCH A [208][210][207][199] FILE '[193][194][218]'"
  284. 7590 PRINT"FIND IT'S NAME ON THE [196][201][210][197][195][212][207][210][217], AND"
  285. 7600 PRINT"SELECT [205][197][206][213] ITEM=[205]ODIFY [194]LOCK."
  286. 7610 PRINT"[217]OU WILL SEE:"
  287. 7620 PRINT".. 0 0[146] 0 0[146] 19 3[146] 65 66[146] 90....ETC"
  288. 7630 PRINT"         ^  ^ ^  ^  ^  ^"
  289. 7640 PRINT" SHOULD BE [221][212]RCK[221][193]  [194]  [218]"
  290. 7650 PRINT"     A 130 [221]&[211]EC[221][198]ILENAME(IN [193][211][195][201][201])"
  291. 7660 GOSUB300:PRINT"[145]"S0$
  292. 7670 PRINT"[205]ODIFY THE BYTE WHICH IDENTIFIES THE "
  293. 7680 PRINT"FILE TYPE..TO 130..SO IT READS:"
  294. 7685 PRINT".. 0 0[146] 0 130[146] 19 3[146] 65 66[146] 90....ETC"
  295. 7690 PRINT"4[146]:[215]RITE THE BLOCK BACK TO THE DISK."
  296. 7700 PRINT"5[146]:[209]UIT AND [214][193][204][201][196][193][212][197] THE DISK."
  297. 7705 PRINT"           [184][184][184][184][184][184][184][184]"
  298. 7710 PRINT"5[146]:[208]RAY..":GOSUB310
  299. 7880 INPUT"[215][193][206][212] [212][207] [212][210][217]   Y[157][157][157]";A$:IFA$<>"Y"THENRETURN
  300. 7890 GOTO12000
  301. 7900 CLOSE15:PRINTCHR$(142):PRINT"[147]":END
  302. 8000 REM INITIALIZE
  303. 8001 REM"[184][184][184][184][184][184][184][184][184][184]
  304. 8002 [153][199](142):[153]""
  305. 8005 [134]C(255),T(120),S(120),SC(77),B(4)
  306. 8006 [131]1,17,20,24,19,30,17,35,16,0
  307. 8007 [131]65,17,20,24,18,30,17,35,16,0
  308. 8008 [131]67,39,28,53,26,64,24,77,22,0
  309. 8010 R$(0)[178]"":R$(1)[178]"WAIT"
  310. 8020 SD$[178]""
  311. 8025 MD$[178]"WAIT"
  312. 8035 [133]"LOADDRIVEWAIT   SPC(CMDCMDCMD";DR$:DR[178][197](DR$)
  313. 8040 [159]15,8,15,"I"[170]DR$:[141]63900
  314. 8050 K$[178]"  (null)LEFT$RIGHT$(null)CLOSEPEEK(null)(null)LEN(null)CLOSERIGHT$(null)CLOSEVAL(null)(null)(null)(null)  "
  315. 8060 [153]"LOADWAIT...":[140]:WW[178]0:A0[178]1
  316. 8061 [159]3,8,3,"$"[170]DR$:[141]63900
  317. 8062 [161]#3,A$:A[178][198](A$[170][199](0))
  318. 8063 [135]DT:[139]A[178]DT[167]8070
  319. 8064 WW[178]WW[170]1:[139]WW[179]3[167] [129]I[178]1[164]9:[135]DT:[130]:[137]8063
  320. 8065 [153]"LOAD***NOT A RECOGNIZABLE DISKWAIT***":[160]3:[153]"WANT TO QUIT?"
  321. 8066 [141]310:[139]IN$[178]"Y"[167]7900
  322. 8067 [137]8110
  323. 8070 [139]DT[178]1[176]DT[178]65[167]KK[178]143
  324. 8071 [139]DT[178]67[167]KK[178]5
  325. 8072 [141]8200
  326. 8075 [135]A1:[139]A1[178]0[167]8090
  327. 8080 [135]B1:[129]I[178]A0[164]A1:SC(I)[178]B1[170]1:[130]:A0[178]I:[137]8075
  328. 8090 [139]DT[178]1[176]DT[178]65[167]D1[178]1:TT[178]35:S2[178]3:DI[178]18
  329. 8095 [139]DT[178]67[167]D1[178]257:TT[178]77:S2[178]4:DI[178]39
  330. 8096 S1[178]S2[171]1:S3[178]S2[170]1
  331. 8100 [160]3:[139]TT[178]0[167]8065
  332. 8110 [129]I[178]0[164]7:P(I)[178]2[174]I:[130]
  333. 8120 X$(0)[178]"(null)":X$(1)[178]"(null)"
  334. 8130 S0$[178]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB("
  335. 8140 CL$[178]"":[129]I[178]1[164]39:CL$[178]CL$[170]" ":[130]
  336. 8150 S1$[178]"^....^....^....^....^....^....^...."
  337. 8160 S2$[178]"(null)    (null)    (null)    (null)    (null)    (null)    (null)"
  338. 8170 S3$[178]"0    5    10   15   20   25   30"
  339. 8180 [142]
  340. 8200 [129]I[178]3[164]KK:[161]#3,A$:[130]:[153]"";
  341. 8210 [129]I[178]1[164]23:[161]#3,A$:A$[178]A$[170][199](0):[153]A$;:[130]
  342. 8220 [153]:[142]
  343. 9000 [143] DECIMAL_HEX
  344. 9001 [143]"TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(
  345. 9005 M=VAL(M$):IFM<>0THENRETURN
  346. 9010 M$=MID$(M$,2):M=0:LM=LEN(M$)
  347. 9020 FORCN=1TOLM
  348. 9030 MM$=MID$(M$,CN,1):GOSUB9100:M=M+MM*16^(LM-CN):NEXT
  349. 9040 RETURN
  350. 9100 IFMM$="0"THENMM=0:RETURN
  351. 9110 MM=VAL(MM$):IFMM<>0THENRETURN
  352. 9120 MM=ASC(MM$)-55:RETURN
  353. 9500 REM HEX_DECIMAL
  354. 9501 REM"[163][163][163][163][163][163][163][163][163][163][163]
  355. 9505 SM[178]M:M$[178]"$":[129]CN[178]3[164]0[169][171]1:CM%[178]SM[173](16[174]CN):[141]9600:M$[178]M$[170]MM$
  356. 9510 SM[178]SM[171](16[174]CN)[172]CM%:[130]:[142]
  357. 9600 [139]CM%[179]10[167]MM$[178][199](CM%[170]48):[142]
  358. 9610 MM$[178][199](CM%[170]55):[142]
  359. 10000 [153]SD$"    "
  360. 10010 [151]CRT[170]J,168:J[178]J[170]1:[129]K[178]2[164]1[169][171]1:S$[178][202]([196](C(I[171]K)),2)
  361. 10020 [129]L[178]1[164][195](S$):[151]CRT[170]J,[197]([202](S$,L,1))[170]176:J[178]J[170]1:[130]
  362. 10030 [151]CRT[170]J,172:J[178]J[170]1:[130]:[151]CRT[170]J[171]1,169
  363. 10040 [153]SD$"NOTE:(TRACK,SECTOR) ":[142]
  364. 11000 :
  365. 11010 [151]CRT[170]J,190:J[178]J[170]1:SV[178]C(I[171]2)[170]C(I[171]1)[172]256:S$[178][202]([196](SV),2)
  366. 11020 [129]L[178]1[164][195](S$):[151]CRT[170]J,[197]([202](S$,L,1))[170]176:J[178]J[170]1:[130]
  367. 11030 J[178]J[170]1:[151]CRT[170]J[171]1,188
  368. 11040 [153]SD$"FREFREFREFRE:>NUMBER BLOCKS<":[142]
  369. 12000 [143] UNSCRATCH ROUTINE
  370. 12001 [143]"FREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFRE
  371. 12010 PRINTCHR$(142)
  372. 12020 PRINT"[147]THE SCRATCHED FILE NAMES WILL"
  373. 12030 PRINT"BE DISPLAYED."
  374. 12040 PRINT"YOU MAY DECIDE WHICH FILE YOU"
  375. 12050 PRINT"WISH TO RECOVER."
  376. 12060 PRINT"RETURN[146] TO CONTINUE":GOSUB310
  377. 12070 PRINT"[147]"
  378. 12080 CLOSE3:CLOSE15:OPEN15,8,15
  379. 12090 T=DI:S=1:OPEN3,8,3,"#0":GOSUB63900
  380. 12095 PRINT#15,"B-R";3;DR;T;S
  381. 12096 PRINT"[147]LOOKING AT:"
  382. 12097 PRINT"TRACK   [157][157][157]"T" SECTOR   [157][157][157]"S
  383. 12100 FORJ=0TO255:PRINT#15,"M-R";CHR$(J);CHR$(17):GET#15,A$
  384. 12110 C(J)=ASC(A$+CHR$(0)):NEXT
  385. 12120 FORD=2TO255STEP32:IFC(D)<>0ORC(D+1)=0THEN12200
  386. 12130 PRINTSD$CL$SD$"WANT TO UNSCRATCH ";:FORP9=1TO200:NEXT
  387. 12140 GETA$:FORK=D+3TOD+18:PRINTCHR$(C(K));:NEXT:PRINT"[146]?":GOSUB310
  388. 12150 IFIN$="Y"THEN12300
  389. 12200 NEXTD:T=C(0):S=C(1):IFT=DITHEN12095
  390. 12210 PRINT"[147]FINISHED LOOKING..":PRINT"RETURN[146] TO CONTINUE.":GOSUB310:RETURN
  391. 12300 T0=T:S0=S:T=C(D+1):S=C(D+2):B0=C(D+28)+C(D+29)*256:PRINTCHR$(14)
  392. 12301 PRINT"[147][196]IRECTORY [194]LOCK [195]OUNT="B0:N9=1:PRINTS0$
  393. 12302 CLOSE3:CLOSE15:OPEN15,8,15:OPEN3,8,3,"#":GOSUB63900:GET#3,BN$:BN=ASC(BN$)
  394. 12303 T(N9)=T:S(N9)=S:N9=N9+1
  395. 12305 PRINT#15,"B-R";3;DR;T;S
  396. 12306 PRINT#15,"B-P";3;0
  397. 12307 GET#3,Z$:IFZ$=""THENZ$=CHR$(0)
  398. 12308 T(N9)=ASC(Z$):IFT(N9)=0THEN12314
  399. 12309 GET#3,Z$:IFZ$=""THENZ$=CHR$(0)
  400. 12310 S(N9)=ASC(Z$)
  401. 12311 T$=MID$(STR$(T),2):S$=MID$(STR$(S),2)
  402. 12312 PRINT"("T$","S$")";
  403. 12313 T=T(N9):S=S(N9):N9=N9+1:GOTO12305
  404. 12314 N9=N9-1:PRINT
  405. 12315 PRINT""N9" BLOCKS"
  406. 12350 IFN9<>B0THENPRINT"**INCORRECT BLOCK COUNT[146]**":GOSUB300:RETURN
  407. 12360 PRINT"[204]OOKS GOOD SO FAR."
  408. 12370 PRINT"[211]HALL WE PROCEED?":GOSUB310:IFIN$<>"Y"THENRETURN
  409. 12380 PRINT"[147][215]E'LL CHECK THAT THE ABOVE BLOCKS"
  410. 12390 PRINT"ARE [198][210][197][197] BY LOOKING AT THE [194][193][205]."
  411. 12400 PRINT"[212]HE TRACK/SECTORS FOR THE FILE WILL BE"
  412. 12410 PRINT"DISPLAYED. [201]F A BLOCK IS OCCUPIED"
  413. 12420 PRINT"THE [213][206][211][195][210][193][212][195][200] WILL NOT WORK!":GOSUB300
  414. 12421 CLOSE15:OPEN15,8,15,"I"+DR$:GOSUB63900:PRINT"[147]":PRINTCHR$(142):K1=1
  415. 12422 OPEN2,8,2,"$"+DR$:GOSUB63900
  416. 12423 DEF FNB(I)=(ZANDP(I))/P(I)
  417. 12424 FF=D1+(T(K1)-1)*S3:PP=0
  418. 12425 FORK2=0TOFF:GET#2,A$:NEXT
  419. 12440 T=T(K1):PRINT"[147]":GOSUB6400:GOSUB6580
  420. 12450 PRINTSD$"CHECK THAT THE FOLLOWING "
  421. 12455 PRINT"SECTORS ARE FREE=[215]"
  422. 12460 FORK2=1TON9:IFT(K2)=TTHENPRINTR$(PP)MID$(STR$(S(K2)),2)R$(1-PP);
  423. 12465 PP=1-PP:NEXT:PRINT
  424. 12470 PRINT"OK?":GOSUB310
  425. 12475 IFIN$<>"Y"THENPRINT"[147]SORRY..":PRINTCHR$(14):GOSUB300:CLOSE2:RETURN
  426. 12480 CLOSE2:IFK1>=N9THENCLOSE15:RETURN
  427. 12490 K1=K1+1:IFT(K1)=0THEN12600
  428. 12500 IFT(K1)=TTHEN12490
  429. 12505 GOTO12422
  430. 12600 PRINT"[147]":PRINTCHR$(14)
  431. 12610 PRINT"[206]OW MODIFY THE MAGIC BYTE[146] ON DIRECTORY"
  432. 12620 PRINT"[212]RACK"T0" [211]ECTOR"S0
  433. 12630 PRINT"[212]HEN [215]RITE THE BLOCK BACK TO ("T0","S0")"
  434. 12640 PRINT"[198]INALLY [214]ALIDATE[146] THE DISK!"
  435. 12650 GOSUB300:RETURN
  436. 13000 T=T1:S=S1
  437. 13001 FORJ=1TOB0
  438. 13005 CLOSE3:CLOSE15:OPEN15,8,15:OPEN3,8,3,"#":GOSUB63900:GET#3,BN$:BN=ASC(BN$)
  439. 13010 BN$=MID$(BN$,2):BM=BN+17+12*INT((BN+1)/4)
  440. 13020 PRINT:PRINT"("T","S")_ [198][201][210][211][212] [194][204][207][195][203]":N9=1
  441. 13030 PRINT#15,"B-R";3;DR;T;S
  442. 13040 PRINT#15,"B-P";3;0
  443. 13050 GET#3,Z$:IFZ$=""THENZ$=CHR$(0)
  444. 13060 T=ASC(Z$):IFT=0THEN7200
  445. 13070 GET#3,Z$:IFZ$=""THENZ$=CHR$(0)
  446. 13080 S=ASC(Z$)
  447. 13090 T$=MID$(STR$(T),2):S$=MID$(STR$(S),2)
  448. 13100 PRINT"("T$","S$")";
  449. 13110 NEXT
  450. 13120 PRINT"_ [204][193][211][212] [194][204][207][195][203]"
  451. 13130 PRINTN9" BLOCKS":GOSUB300
  452. 13303 BN$=MID$(BN$,2):BM=BN+17+12*INT((BN+1)/4)
  453. 13304 PRINT:PRINT"("T","S")_ [198][201][210][211][212] [194][204][207][195][203]":N9=1
  454. 63900 INPUT#15,E,E$,E1,E2
  455. 63901 IFE<>0THENPRINT:PRINT"**DISK ERROR[146]**"E,E$,E1,E2
  456. 63902 RETURN
  457.